package com.myjoje.controller.system;

import com.myjoje.base.BaseUtil;
import com.myjoje.bean.UserBean;
import com.myjoje.config.AppCache;
import com.myjoje.config.shiro.ShiroUtil;
import com.myjoje.config.support.DaoSupport;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import java.time.chrono.IsoChronology;
import java.util.List;

/**
 * 手机端和电脑端页面（集中管理）
 */
@Controller
public class PageController {


    /**
     * 退出登录
     */
    @RequestMapping("/system/logout")
    public String logout() {
        //退出时清除用户的当前机构
        AppCache.removeCurrentDept(ShiroUtil.getCurrentUser().getId());
        return "redirect:/logout";
    }


    /**
     * 主页面
     */
    @RequestMapping("/home/home_index")
    public String homeIndex(Model model) {
        UserBean user = ShiroUtil.getCurrentUser();
        String deptIds = user.getDeptIds();
        //部门id为空
        if (BaseUtil.isEmpty(deptIds)) {
            //是超级管理员，进入错误提示页面
            if (!ShiroUtil.hasRole(AppCache.getRoleRoot())) {
                return "/home/home_no_dept";
            }
        } else {
            //设置当前用户的默认机构
            AppCache.setCurrentDept(user.getId(), deptIds.split(",")[0]);
        }
        model.addAttribute("nickname", user.getNickname());
        return "home/home_index";
    }

    /**
     * 菜单管理
     */
    @RequestMapping("/system/menu/menu_index")
    public String menuIndex() {
        /*
         * 1.菜单的创建，修改，删除（只可以删除没有子菜单的菜单）
         * 2.菜单提供显示，隐藏功能
         * 3.角色授权功能
         */
        return "system/menu_index";
    }

    /**
     * 菜单树，用于角色授权
     */
    @RequestMapping("/system/menu/menu_tree")
    public String menuTree(String roleId, Model model) {
        /*
         * 1.菜单的创建，修改，删除（只可以删除没有子菜单的菜单）
         * 2.菜单提供显示，隐藏功能
         * 3.角色授权功能
         */
        model.addAttribute("roleId", roleId);
        return "system/menu_tree";
    }

    /**
     * 用户管理
     */
    @RequestMapping("/system/user/user_index")
    public String userIndex() {
        /*
         * 1.用户的创建，修改，用户的具体信息请添加字段
         * 2.用户和角色之间关系维护
         * 3.用户和部门之间关系维护
         * 4.用户的删除为假删除，预防用户的主键被其他表使用
         * */
        return "system/user_index";
    }

    /**
     * 角色管理
     */
    @RequestMapping("/system/user/role_index")
    public String roleIndex() {
        /*
         * 1.角色的创建，修改，删除（只可以删除没有用户的角色）
         * 2.角色和用户关系维护
         * */
        return "system/role_index";
    }

    /**
     * 角色用户
     */
    @RequestMapping("/system/user/role_user")
    public String roleUser(String id, String name, Model model) {
        model.addAttribute("id", id);
        model.addAttribute("name", name);
        return "/system/role_user";
    }


    /**
     * 部门管理
     */
    @RequestMapping("/system/dept/dept_index")
    public String deptIndex() {
        /* 说明：
         * 1.超级管理员只可以创建一级部门，一级部门相当于一个系统
         * 例如：一级部门为河南省网发部，此系统针对河南省网发部使用
         * 切换一级部门为河北省网发部，此系统针对河北省网发部使用
         * 2.系统管理员可以创建二级，三级...
         * 3. 部门的创建，修改，删除（只可以删除没有用户的部门）
         * 4. 一级部门和用户关系的维护，一个用户属于多个一级部门，登录后主页面提供下拉框选择
         * 5. 一级部门和其他部门的表分开
         * 5. 为提升系统效率，更新名称时，要更新parentName
         */
        return "system/dept_index";
    }

    /**
     * 部门添加，描述使用富文本
     */
    @RequestMapping("/system/dept/dept_add_update")
    public String deptAdd(String id, Model model) {
        model.addAttribute("id", id);
        return "/system/dept_add_update";
    }

    /**
     * 部门用户
     */
    @RequestMapping("/system/dept/dept_user")
    public String deptUser(String id, String name, Model model) {
        model.addAttribute("id", id);
        model.addAttribute("name", name);
        return "/system/dept_user";
    }


}
